<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // window.onload = function() {
        //     alert(1);
        // }




        // window.onload = () => {
        //     alert(2);
        // }




        //1 声明函数
        // function fn1() {
        //     console.log('fn1');
        // }
        // fn1();


        // let fn2 = () => {
        //     console.log('fn2');
        // }
        // fn2();




        // 2 表达式函数
        var fn3 = function(q) {
            console.log('fn3' + q);
            return 3;
        }
        fn3('hello 3');



        let fn4 = (a) => {
            console.log('fn4' + a);
            return 4;
        }
        fn4('hello 4');


        // 注意  函数的形参 只有一个的时候 可以省略小括号  大于等于2个时小括号不能省略
        let fn5 = a => {
            console.log('fn5' + a);
            return 5;
        }
        fn5('hello 5');


        // es6 涉及函数的封装   url+methods
        // 1个参数直接写
        // 2个参数也是直接写  只要大于2个以上的参数  变成对象或者数组去传递
        {
            let fn6 = arr => {
                console.log('fn5' + arr[0] + arr[1]);
                return 6;
            };
            var arr = ['hello 6', '2个'];
            fn6(arr)
        }





        // 函数体里面的代码只有1行的时候 可以省略大括号  自然会带上return

        {
            let fn7 = (a) => {
                return 7 + a;
            }
            console.log(fn7(007)); //14



            // 简写
            // let fn7 = a =>  7 + a;



            let fn8 = b => b + 8;

            console.log(fn8('888')); //'8888'

        }
    </script>
</body>

</html>